package cn.edu.ncepu;

import java.util.ArrayList;
import java.util.List;

public class CombinationSelector {

    /**
     * 字典序选取数组中3个元素的所有组合（i < j < k）
     * @param arr 原始数组
     * @return 组合结果列表
     * @param <T> 元素类型
     */
    public static <T> List<List<T>> select3(List<T> arr) {
        List<List<T>> results = new ArrayList<>();
        int n = arr.size();

        // 三层循环：i < j < k，保证字典序
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                for (int k = j + 1; k < n; k++) {
                    // 创建当前组合并添加到结果中
                    List<T> combination = new ArrayList<>();
                    combination.add(arr.get(i));
                    combination.add(arr.get(j));
                    combination.add(arr.get(k));
                    results.add(combination);
                }
            }
        }
        return results;
    }

    public static void main(String[] args) {
        // 测试：整数数组的3元素组合
        List<Integer> array = new ArrayList<>();
        array.add(1);
        array.add(2);
        array.add(3);
        array.add(4);
        array.add(5);

        List<List<Integer>> result = select3(array);
        // 输出所有组合
        System.out.println(result);
    }
}